const axios = require('axios');

// 模拟数据生成器
const names = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十', '郑十一', '王十二'];
const locations = ['北京', '上海', '广州', '深圳', '杭州', '成都', '武汉', '南京', '西安', '苏州'];
const schools = ['清华大学', '北京大学', '复旦大学', '上海交通大学', '浙江大学', '南京大学', '中国科学技术大学', '华中科技大学', '武汉大学', '西安交通大学'];
const majors = ['计算机科学与技术', '软件工程', '信息管理与信息系统', '电子信息工程', '通信工程', '数据科学与大数据技术', '人工智能', '网络工程', '物联网工程', '信息安全'];
const companies = ['腾讯', '阿里巴巴', '字节跳动', '百度', '美团', '京东', '网易', '华为', '小米', '滴滴出行'];
const positions = ['前端工程师', '后端工程师', '全栈工程师', 'Java工程师', 'Python工程师', '产品经理', 'UI设计师', '测试工程师', '运维工程师', '数据分析师'];

// 生成随机电话号码
function generatePhone() {
  return `138${Math.floor(Math.random() * 100000000).toString().padStart(8, '0')}`;
}

// 生成随机邮箱
function generateEmail(name) {
  const domains = ['qq.com', '163.com', 'gmail.com', 'outlook.com', 'foxmail.com'];
  const randomDomain = domains[Math.floor(Math.random() * domains.length)];
  return `${name.toLowerCase()}${Math.floor(Math.random() * 1000)}@${randomDomain}`;
}

// 生成教育经历
function generateEducation() {
  const schoolIndex = Math.floor(Math.random() * schools.length);
  const majorIndex = Math.floor(Math.random() * majors.length);
  const startYear = 2015 + Math.floor(Math.random() * 5);
  const endYear = startYear + 4;
  
  return [
    {
      school: schools[schoolIndex],
      major: majors[majorIndex],
      degree: Math.random() > 0.5 ? '本科' : '硕士',
      time: `${startYear}.09 - ${endYear}.06`,
      description: `主修课程：数据结构、算法设计、操作系统、计算机网络、数据库原理等。\n获得奖学金：${Math.random() > 0.5 ? '一等奖学金' : '二等奖学金'}。`
    }
  ];
}

// 生成工作经历
function generateWorkExperience() {
  const experiences = [];
  const numJobs = 1 + Math.floor(Math.random() * 2); // 1-2份工作经历
  
  for (let i = 0; i < numJobs; i++) {
    const companyIndex = Math.floor(Math.random() * companies.length);
    const positionIndex = Math.floor(Math.random() * positions.length);
    const startYear = 2020 + Math.floor(Math.random() * 3);
    const startMonth = 1 + Math.floor(Math.random() * 12);
    const isCurrentJob = i === 0 && Math.random() > 0.5;
    const endDate = isCurrentJob ? '至今' : `${startYear + 1 + Math.floor(Math.random() * 2)}.${String(1 + Math.floor(Math.random() * 12)).padStart(2, '0')}`;
    
    experiences.push({
      company: companies[companyIndex],
      position: positions[positionIndex],
      time: `${startYear}.${String(startMonth).padStart(2, '0')} - ${endDate}`,
      description: `负责公司核心产品的开发与维护，参与需求分析、技术方案设计、代码编写、测试等工作。\n使用技术栈：Vue.js、React、Node.js、MySQL、Redis等。\n完成多个重要项目，提升了系统性能和用户体验。`
    });
  }
  
  return experiences;
}

// 生成技能列表
function generateSkills() {
  const allSkills = [
    'JavaScript', 'TypeScript', 'Vue.js', 'React', 'Node.js', 
    'HTML5', 'CSS3', 'Webpack', 'Git', 'MySQL', 
    'Redis', 'MongoDB', 'Docker', 'Linux', 'Python',
    'Java', 'Spring Boot', 'MyBatis', 'Nginx', 'Element Plus'
  ];
  
  // 随机选择8-12个技能
  const numSkills = 8 + Math.floor(Math.random() * 5);
  const selectedSkills = [];
  const usedIndices = new Set();
  
  while (selectedSkills.length < numSkills) {
    const index = Math.floor(Math.random() * allSkills.length);
    if (!usedIndices.has(index)) {
      selectedSkills.push(allSkills[index]);
      usedIndices.add(index);
    }
  }
  
  return selectedSkills.join('\n');
}

// 生成一条简历数据
function generateResume(index) {
  const name = names[index];
  const templateId = 1 + (index % 3); // 在3个模板之间循环
  
  return {
    template_id: templateId,
    basic_info: {
      name: name,
      phone: generatePhone(),
      email: generateEmail(name),
      location: locations[index]
    },
    education_list: generateEducation(),
    work_list: generateWorkExperience(),
    skills_list: generateSkills()
  };
}

// 主函数
async function seedResumes() {
  console.log('🌱 开始添加模拟简历数据...\n');
  
  const baseURL = 'http://localhost:7001';
  let successCount = 0;
  let failCount = 0;
  
  for (let i = 0; i < 10; i++) {
    try {
      const resumeData = generateResume(i);
      
      console.log(`📝 [${i + 1}/10] 创建简历: ${resumeData.basic_info.name}`);
      
      const response = await axios.post(`${baseURL}/api/resumes`, resumeData);
      
      if (response.data.code === 0) {
        console.log(`   ✅ 成功! 简历名: ${response.data.data.resume_name}\n`);
        successCount++;
      } else {
        console.log(`   ❌ 失败: ${response.data.msg}\n`);
        failCount++;
      }
      
      // 稍微延迟一下，避免请求过快
      await new Promise(resolve => setTimeout(resolve, 200));
      
    } catch (error) {
      console.log(`   ❌ 错误: ${error.message}\n`);
      failCount++;
    }
  }
  
  console.log('='.repeat(50));
  console.log(`\n📊 执行完成！`);
  console.log(`   ✅ 成功: ${successCount} 条`);
  console.log(`   ❌ 失败: ${failCount} 条`);
  console.log(`   📈 总计: 10 条\n`);
}

// 执行脚本
seedResumes().catch(error => {
  console.error('❌ 脚本执行出错:', error.message);
  process.exit(1);
});

